package com.manli.wechat.utils;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import com.alibaba.fastjson.JSON;
import com.manli.common.utils.HttpUtil;
import com.manli.wechat.pojo.WeChatJsSdkAuthPojo;

/**
 * jssdk 和 网页授权
 * @author Shensg
 *
 * 2020年4月17日
 */
public class WeChatJsSDKUtil {
   
	/**
	 * 跳转微信获取code
	 * @param redirectUrl 
	 * 前端请求进来带上跳转地址  例如 http://**.com?redirect_url=decodeURI("http://**.com?a=1&b=1")
	 * 这样才不对丢失参数
	 * @param state
	 * @param appId
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public static String getWechatAuthCode(String redirectUrl, String state ,String appId) throws UnsupportedEncodingException {
		//因为编码过了之后 获取到解码完整数据，需要再次编码使得下一个接口可以获得完整地址
		String wechatAuthUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?"
				+ "appid="+appId
				+ "&redirect_uri="+URLEncoder.encode(redirectUrl,"UTF8")
				+ "&response_type=code&scope=snsapi_base"
				+ "&state=" + state
				+ "#wechat_redirect";
		return wechatAuthUrl;
	}

	public static WeChatJsSdkAuthPojo getOpenIdInfoByCode(String appId , String appSecret ,String code) throws Exception {
		return JSON.parseObject((HttpUtil.httpGet("https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appId+""
						+ "&secret="+appSecret+""
						+ "&code="+code+"&grant_type=authorization_code")),WeChatJsSdkAuthPojo.class);
	}

}
